#ifndef tp2_graphes_h
#define tp2_graphes_h

#include "listesChainees.h"

/*
 * Structure représentant un graphe
 */
typedef struct TypGraphe TypGraphe;
struct TypGraphe
{
    int estOriente; /* Indique si le graphe est orienté ou non*/
   	int nbMaxSommets; /* Indique le nombre maximum de sommets pouvant appartenir au graphe	*/
   	struct TypVoisins **listesAdjacences; /* Tableau où à chaque case correspond un sommet et ses successeurs*/
};

TypGraphe* creationGraphe(int nbMaxSommets, int estOriente);
TypGraphe* initialisationGraphe();
TypGraphe* lecture(char nom_fic[]);

int verificationsAvantInsertionArete(TypGraphe *g, int sommetOrigine, int sommetDestination);
int insertionSommet(TypGraphe *g, int sommet);
int insertionArete(TypGraphe *g, int sommetOrigine, int sommetDestination, int ponderation);
int supprimerSommet(TypGraphe *g, int sommet);
int supprimerArete(TypGraphe *g, int sommetOrigine, int sommetDestination);
int sauverGraphe(TypGraphe *g, char *nomFich);

void affichage(TypGraphe *g);
void creationArete(TypGraphe *g, int sommetOrigine, int sommetDestination, int ponderation);
void quitter(TypGraphe **g);
void supprimerEspaceEnDebutDeLigne(char *str[]);

#endif
